-- 与 HappeningIdPageBuffer.incrPageOffset() 配套使用

local offsetExpire = ARGV[1] -- 用户全部动态 的 分页动态 id 的偏移量缓存的过期时间，单位：s
local offsetPrefix = string.gsub(ARGV[2], '"', '') -- 用户全部动态 的 分页动态 id 的偏移量缓存的键的前缀
local userPrefix = string.gsub(ARGV[3], '"', '') -- 指定用户动态 的 分页动态 id 缓存的键的前缀
local selfPrefix = string.gsub(ARGV[4], '"', '') -- 用户全部动态 的 分页动态 id 缓存的键的前缀
local userIdListStr = string.sub(ARGV[5], 2, string.len(ARGV[5]) - 1) -- 用户 id 集合的字符串

local symbolLen = string.len(',')
local i = 1
local k = 1
local userIdList = {}

while true do
    local j = string.find(userIdListStr, ',', i)
    if not j then
        userIdList[k] = string.sub(userIdListStr, i, string.len(userIdListStr))
        break
    end
    userIdList[k] = string.sub(userIdListStr, i, j - 1)
    i = j + symbolLen
    k = k + 1
end

-- 删除指定用户的分页动态信息
redis.call('DEL', userPrefix .. ':0', userPrefix .. ':1')

for _, userId in ipairs(userIdList) do
    -- 如果该用户有分页查询动态 id 的缓存，则需要增加
    if redis.call('EXISTS', selfPrefix .. userId) ~= 0 then
        local offsetKey = offsetPrefix .. userId
        redis.call('INCR', offsetKey)
        redis.call('EXPIRE', offsetKey, offsetExpire)
    end
end

return nil